package org.dromara.quick.chat.model.vo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 群详细
 * @Author: Stars
 * @Date: 2025/3/11 22:23
 */
@Data
public class ImGroupChatDetailVO {

    /**
     * (唯一标识) 群聊表的唯一标识编号，系统自动生成，用于区分不同的群聊记录
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * (群号) 11 位的群聊编号，具有唯一性
     */
    private String groupNumber;

    /**
     * (群名称) 群聊的名称，用于标识该群
     */
    private String groupName;

    /**
     * 群头像
     */
    private String groupAvatar;

    /**
     * (群描述) 对群聊的详细介绍信息
     */
    private String groupDescription;

    /**
     * (邀请确认) 表示邀请成员加入群聊时是否需要确认，0 代表未开启，1 代表已开启
     */
    private Integer invitationConfirmation;

    /**
     * (是否禁言) 表示群聊是否处于禁言状态，0 代表未禁言，1 代表已禁言
     */
    private Integer isMuted;

    /**
     * (删除聊天记录策略) 表示删除聊天记录的策略，0 代表未开启，1 代表退出聊天框删除，2 代表退出应用删除
     */
    private Integer chatRecordDeleteStrategy;

    /**
     * (阅后即焚) 表示阅后即焚功能的开启状态，0 代表未开启，1 代表已开启
     */
    private Integer burnAfterRead;

    /**
     * (阅后删除时长) 表示阅后即焚的持续时长，取值范围为 0 - 60 秒
     */
    private Integer burnAfterReadDuration;

    /**
     * (聊天记录保密) 表示聊天记录保密功能的开启状态，0 代表未开启，1 代表已开启
     */
    private Integer chatRecordConfidential;

    /**
     * (禁止截屏) 表示禁止截屏功能的开启状态，0 代表未开启，1 代表已开启
     */
    private Integer screenshotProhibited;

    /**
     * (群人数) 该群聊内的成员总数
     */
    private Integer totalMembers;

    /**
     * (活跃人数) 该群聊内的活跃成员数量
     */
    private Integer activeMembers;

    /**
     * (女性人数) 该群聊内女性成员的数量
     */
    private Integer femaleMembers;

    /**
     * (男性人数) 该群聊内男性成员的数量
     */
    private Integer maleMembers;

    /**
     * (90 后占比) 该群聊内 90 后成员的占比，精确到小数点后两位，范围为 0 - 100
     */
    private BigDecimal ratioPostNineZero;

    /**
     * (00 后占比) 该群聊内 00 后成员的占比，精确到小数点后两位，范围为 0 - 100
     */
    private BigDecimal ratioPostZeroZero;

    /**
     * 当前用户是否在群中,1:在，0：不在
     */
    private Integer isMemberInGroup;

    /**
     * 群主名称
     */
    private String creatorName;

    /**
     * 群主编号
     */
    private Long creatorId;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy 年 MM 月 dd 日", timezone = "GMT+8")
    private Date createTime;

    public Integer getTotalMembers() {
        return totalMembers == null ? 0 : totalMembers;
    }

    public Integer getActiveMembers() {
        return activeMembers == null ? 0 : activeMembers;
    }

    public Integer getFemaleMembers() {
        return femaleMembers == null ? 0 : femaleMembers;
    }

    public Integer getMaleMembers() {
        return maleMembers == null ? 0 : maleMembers;
    }

    public BigDecimal getRatioPostNineZero() {
        return ratioPostNineZero == null ? BigDecimal.ZERO : ratioPostNineZero;
    }

    public BigDecimal getRatioPostZeroZero() {
        return ratioPostZeroZero == null ? BigDecimal.ZERO : ratioPostZeroZero;
    }

}
